home *** CD-ROM | disk | FTP | other *** search
Wrap
aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) NNNNAAAAMMMMEEEE afGetCompression, afGetCompressionParams - get the compression type and parameters for an audio track from an AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee structure SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////aaaauuuuddddiiiiooooffffiiiilllleeee....hhhh>>>> iiiinnnntttt aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee ffffiiiilllleeee,,,, iiiinnnntttt ttttrrrraaaacccckkkkiiiidddd)))) iiiinnnntttt aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss((((AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee ffffiiiilllleeee,,,, iiiinnnntttt ttttrrrraaaacccckkkkiiiidddd,,,, iiiinnnntttt ****ccccoooommmmpppprrrreeeessssssssiiiioooonnnn,,,, AAAAUUUUppppvvvvlllliiiisssstttt ppppvvvvlllliiiisssstttt,,,, iiiinnnntttt nnnnuuuummmmiiiitttteeeemmmmssss)))) PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRR _f_i_l_e expects an AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee structure, previously created by a call to aaaaffffOOOOppppeeeennnnFFFFiiiilllleeee(3dm). _t_r_a_c_k_i_d is an integer which identifies an audio track in the file. Since all currently supported file formats allow at most one audio track per file, the value AAAAFFFF____DDDDEEEEFFFFAAAAUUUULLLLTTTT____TTTTRRRRAAAACCCCKKKK should always be used for this argument for now. _c_o_m_p_r_e_s_s_i_o_n is a pointer to an integer which will be filled in with the symbolic constant indicating which compression scheme used for the specified audio track. _p_v_l_i_s_t is an AAAAUUUUppppvvvvlllliiiisssstttt structure previously created via a call to AAAAUUUUppppvvvvnnnneeeewwww(3dm), initialized with parameters and parameter types using AAAAUUUUppppvvvvsssseeeettttppppaaaarrrraaaammmm(3dm) and AAAAUUUUppppvvvvsssseeeettttvvvvaaaallllttttyyyyppppeeee(3dm). It will be filled with parameter values related to the compression scheme of the specified audio track. _n_u_m_i_t_e_m_s is the number of valid entries in the _p_v_l_i_s_t. RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEE aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(((()))) returns a positive symbolic integer constant which describes the type of audio compression used for the specified audio track, or -1 on failure. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(((()))) returns the same symbolic integer in _c_o_m_p_r_e_s_s_i_o_n. Additionally, the codec-specific parameters of _p_v_l_i_s_t are scanned up to _n_u_m_i_t_e_m_s and the values are filled in. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN Both aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(((()))) and aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(((()))) are obsolete, having been replaced by aaaaffffGGGGeeeettttFFFFoooorrrrmmmmaaaattttPPPPaaaarrrraaaammmmssss(3dm), which uses the newer DDDDMMMMppppaaaarrrraaaammmmssss(3dm) parameter lists. These older routines remain for backwards compatibility. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(((()))) returns the type of audio compression used for an audio track. Valid compression identifiers include: PPPPaaaaggggeeee 1111 aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____NNNNOOOONNNNEEEE no compression AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777711111111____UUUULLLLAAAAWWWW 64kbps CCITT G.711 ulaw encoding, 8 kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777711111111____AAAALLLLAAAAWWWW 64 kbps CCITT G.711 alaw encoding, 8kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777722222222 64 kbps CCITT G.722 ADPCM, 16 kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777722226666 16, 24, 32, or 40 kbps CCITT G.726 ADPCM, 8 kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777722228888 16 kbps CCITT G.728 ADPCM, 8 kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGGSSSSMMMM 13 kbps European GSM 06.10 encoding, 8 kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____DDDDVVVVIIII____AAAAUUUUDDDDIIIIOOOO 32 kbps DVI ADPCM, 8 kHz 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____FFFFSSSS1111000011116666 48, 72, or 96 kbps US Federal Standard 1016 CELP, 8 kHz, 16-bit AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____MMMMPPPPEEEEGGGG1111 ISO/MPEG-1 Layers I and II. AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAWWWWAAAARRRREEEE____MMMMUUUULLLLTTTTIIIIRRRRAAAATTTTEEEE Aware, Inc's MultiRate I near-lossless or lossless algorithm. AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____AAAACCCCEEEE3333 not supported on SGI systems AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____AAAACCCCEEEE8888 not supported on SGI systems AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____MMMMAAAACCCC3333 not supported on SGI systems AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____MMMMAAAACCCC6666 not supported on SGI systems The four Apple compression algorithms listed above are Apple-proprietary, and are not supported by the SGI Audio File Library. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(((()))) returns, via the _p_v_l_i_s_t argument, a list of compression parameters and their values associated with the current compression scheme. The parameters will be a subset of the following. Parameter type is AAAAUUUU____PPPPVVVVTTTTYYYYPPPPEEEE____LLLLOOOONNNNGGGG unless otherwise noted: AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____LLLLAAAAYYYYEEEERRRR indicates MPEG layer: AAAAFFFF____MMMMPPPPEEEEGGGG____LLLLAAAAYYYYEEEERRRR____IIII PPPPaaaaggggeeee 2222 aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) AAAAFFFF____MMMMPPPPEEEEGGGG____LLLLAAAAYYYYEEEERRRR____IIIIIIII (default) AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____CCCCHHHHAAAANNNNNNNNEEEELLLL____PPPPOOOOLLLLIIIICCCCYYYY //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____PPPPAAAARRRRAAAAMMMM____CCCCHHHHAAAANNNNNNNNEEEELLLL____PPPPOOOOLLLLIIIICCCCYYYY indicates how multiple channels are treated: AAAAFFFF____MMMMPPPPEEEEGGGG____SSSSTTTTEEEERRRREEEEOOOO //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____SSSSTTTTEEEERRRREEEEOOOO indicates that the channels are part of a single multi-channel signal. This includes 4-channel, etc.; AAAAFFFF____MMMMPPPPEEEEGGGG____JJJJOOOOIIIINNNNTTTT____SSSSTTTTEEEERRRREEEEOOOO (default) indicates that the algorithm may have attempted to exploit redundancy between channels for greater coding gain; Not valid for MultiRate. AAAAFFFF____MMMMPPPPEEEEGGGG____IIIINNNNDDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____IIIINNNNDDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT indicates that the separate channels are unrelated and were processed separately, such as multi-lingual sound tracks. Note that all of these settings only have meaning for a multi channel signal. AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____TTTTAAAARRRRGGGGEEEETTTT (not for Aware MultiRate) indicates the bitrate for all channels of compressed data, in bits per second. Note that for some schemes such as MPEG's maxrate (not implemented) this is treated as an upper limit, whereas for MPEG's fixrate, this is strictly achieved as a constant rate. The following is a list of valid bitrates for MPEG. Layer 1: 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, and 448000. Layer 2: 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, and 384000. Default value is 192 kbps / channel for layer 1 and 128 kbps / channel for layer 2. AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY The mode of bit assignment: The valid values depend on the algorithm, as indicated below. AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY (SGI MPEG): AAAAFFFF____MMMMPPPPEEEEGGGG____FFFFIIIIXXXXEEEEDDDD____RRRRAAAATTTTEEEE (default) Fixed bitrate per second. The Compression ratio is determined by value of AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____TTTTAAAARRRRGGGGEEEETTTT. PPPPaaaaggggeeee 3333 aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) AAAAFFFF____MMMMPPPPEEEEGGGG____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL Bitrate is driven by the psychoacoustic model. Enough bits are assigned so that a constant Mask to Noise ratio is attained. See AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL____NNNNMMMMRRRR. AAAAFFFF____AAAAWWWWAAAARRRREEEE____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY (Aware MultiRate): AAAAFFFF____AAAAWWWWAAAARRRREEEE____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL Enough bits are assigned so that the signal is 90+ dB above the quantization noise. Compression ratios are typically between 2.5:1 and 4:1. AAAAFFFF____AAAAWWWWAAAARRRREEEE____LLLLOOOOSSSSSSSSLLLLEEEESSSSSSSS Enough bits are assigned to provide for perfect reconstruction. Compression ratios are typically between 2:1 and 3:1. AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL____NNNNMMMMRRRR (not for Aware MultiRate) For SGI MPEG with AAAAFFFF____AAAAWWWWAAAARRRREEEE____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL, indicates the constant quality mode noise-to-mask ratio in dB. Zero indicates a theoretic psychoacoustic imperceptible compression. Positive values indicate more compression and audible noise. Negative values indicate less compression and less perceptible noise. The type of value of this parameter is AAAAUUUU____PPPPVVVVTTTTYYYYPPPPEEEE____DDDDOOOOUUUUBBBBLLLLEEEE.... IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT NNNNOOOOTTTTEEEE Because this routine has been obsoleted, it only returns compression parameters associated with MPEG1 and Aware, Inc. MultiRate compression schemes. All other compression schemes' parameters must be retrieved via aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(3dm). CCCCAAAAVVVVEEEEAAAATTTTSSSS In future releases, new compression methods will be supported, so the same warnings that apply to aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) (see the _C_A_V_E_A_T_S section of aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) for these important notes) apply here. Because the library transparently decompresses input data and compresses output data regardless of the form of compression in the file, this may not seem like an issue. All currently defined codecs convert the compressed data to and from AAAAFFFF____SSSSAAAAMMMMPPPPFFFFMMMMTTTT____TTTTWWWWOOOOSSSSCCCCOOOOMMMMPPPP, 16-bit data. However, this is by no means guaranteed for future compression types. So when reading or writing a file (even an AIFF-C file) containing compressed data, a program must call aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) to get the "native" sample format of the codec, and check that the program is able to read/write using this sample format. The "native" sample format of a codec is defined as the sample format of the data produced on decompression or expected for compression. All currently-released codecs in the Audio File Library will not change their native sample format, if the documentation currently specifies what that codec's native sample format is. So, for example, if a programmer knows that the file format is AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777711111111____UUUULLLLAAAAWWWW, then the programmer can assume that the native format for that codec is PPPPaaaaggggeeee 4444 aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm)))) AAAAFFFF____SSSSAAAAMMMMPPPPFFFFMMMMTTTT____TTTTWWWWOOOOSSSSCCCCOOOOMMMMPPPP, 16 because this was stated in the documentation. This is done to provide backwards compatibility. However, it is not guaranteed that all future supported codecs will generate 16-bit signed integer data natively, nor is it guaranteed that all future codecs will have a single native sample format (some may be configurable or may vary depending on what kind of data was originally compressed). In every case though, the programmer can call aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) to retrieve the sample format for the current codec on the file corresponding to the given _A_F_f_i_l_e_h_a_n_d_l_e. There is a means by which an application can request the transparent conversion of whatever the native sample format of the codec is to the user's desired sample format. See aaaaffffSSSSeeeettttVVVViiiirrrrttttuuuuaaaallllSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) for a detailed explanation. The library offers a runtime query of all of the supported compression methods, their textual names, their compression ratios (if available), and any other info that may be useful in making a runtime choice of codec. SSSSEEEEEEEE AAAALLLLSSSSOOOO aaaaffffOOOOppppeeeennnnFFFFiiiilllleeee(3dm), aaaaffffRRRReeeeaaaaddddFFFFrrrraaaammmmeeeessss(3dm), aaaaffffIIIInnnniiiittttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(3dm), aaaaffffIIIInnnniiiittttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(3dm), aaaawwwwaaaarrrreeee(5), AAAAUUUUppppvvvvnnnneeeewwww(3dm) PPPPaaaaggggeeee 5555